23 UVA11063 B2-Sequence
內容
所謂「B2數列」係指一正整數數列 1<= b1 < b2 < b3 ...,其中所有的 bi + bj (i <= j)皆不相等。
您的任務是判別某一數列是否為「B2數列」。
輸入說明
每筆測試資料有兩行,第一行代表該數列有 N 個數值(2 ≤ N ≤ 100),第二行則為該數列的N個數值。每個數值 bi 皆為整數,且 bi ≤ 10000。
輸出說明
每筆測試資料以一行輸出,且每筆輸出資料後均需輸出一空白行。格式請參考輸出範例。
範例輸入
4
1 2 4 8
4
3 7 10 14
5
13 14 15 16 17
範例輸出
Case #1: It is a B2-Sequence.
Case #2: It is not a B2-Sequence.
#初始化case變數,用來記錄測試案例的編號
case = 1
#進入無窮迴圈,直到遇到EOFError例外才跳出迴圈
while True:
try:
# 如果case大於1,讀取兩次input(),但是不儲存其值
if case > 1:
input()
input()
#讀取一行數字,並將其轉換為整數列表
a = list(map(int, input().split()))
except EOFError:
# 如果遇到EOFError例外,跳出迴圈
break
#初始化檢查結果變數c為1
c = 1
#創建一個空列表b,用來儲存兩數之和
b = []
#迴圈遍歷輸入的數字列表a
for i in range(len(a)):
# 如果數字小於等於前一個數字,或者數字小於1,將檢查結果變數c設為0,並跳出迴圈
if i > 0 and a[i] <= a[i - 1] or a[i] < 1:
c = 0
break
#再次迴圈遍歷a列表,檢查兩數之和是否在b列表中
for j in range(i, len(a)):
k = a[i] + a[j]
#如果兩數之和不在b列表中,將其加入b列表
if k not in b:
b.append(k)
else:
# 如果兩數之和已經在b列表中,將檢查結果變數c設為0,並跳出迴圈
c = 0
break
#根據檢查結果輸出結果訊息
if c == 1:
print("Case #{}: It is a B2-Sequence.".format(case))
else:
print("Case #{}: It is not a B2-Sequence.".format(case))
print("")
#更新案例編號
case += 1